package com.luwanglin.remoting.constants;

import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;

/**
 * @author lwl
 */
public class RpcConstants {


    /**
     * Magic number. Verify RpcMessage
     */
    public static final byte[] MAGIC_NUMBER = {(byte) 'g', (byte) 'r', (byte) 'p', (byte) 'c'};
    public static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8;
    //version information
    public static final byte VERSION = 1;
    public static final byte TOTAL_LENGTH = 16;
    public static final byte REQUEST_TYPE = 1;
    public static final byte RESPONSE_TYPE = 2;
    //ping
    public static final byte HEARTBEAT_REQUEST_TYPE = 3;
    //pong
    public static final byte HEARTBEAT_RESPONSE_TYPE = 4;
    //这里的１６是这样算来的---------------------------------------+
    //   4B  magic code（魔法数）   1B version（版本）   4B full length（消息长度）    1B messageType（消息类型）
    //   1B compress（压缩类型） 1B codec（序列化类型）    4B  requestId（请求的Id）
    //   body（object类型数据）
    public static final int HEAD_LENGTH = 16;
//    加上了固定的header长度
    public static final int HEAD_LENGTH_FIX = 16 + 2;

    public static final String PING = "ping";
    public static final String PONG = "pong";
    public static final int MAX_FRAME_LENGTH = 8 * 1024 * 1024;

}
